package com.sheng.leetcode.year2025.month08.day14;

import org.junit.Test;

/**
 * @author by ls
 * @date 2025/8/15
 * <p>
 * 1780. 判断一个数字是否可以表示成三的幂的和<p>
 * <p>
 * 给你一个整数 n ，如果你可以将 n 表示成若干个不同的三的幂之和，请你返回 true ，否则请返回 false 。<p>
 * 对于一个整数 y ，如果存在整数 x 满足 y == 3^x ，我们称这个整数 y 是三的幂。<p>
 * <p>
 * 示例 1：<p>
 * 输入：n = 12<p>
 * 输出：true<p>
 * 解释：12 = 3^1 + 3^2<p>
 * <p>
 * 示例 2：<p>
 * 输入：n = 91<p>
 * 输出：true<p>
 * 解释：91 = 3^0 + 3^2 + 3^4<p>
 * <p>
 * 示例 3：<p>
 * 输入：n = 21<p>
 * 输出：false<p>
 * <p>
 * 提示：<p>
 * 1 <= n <= 10^7<p>
 */
public class LeetCode1780 {

    @Test
    public void test() {
//        int n = 12;
//        int n = 91;
        int n = 21;
        System.out.println(new Solution().checkPowersOfThree(n));
    }
}

class Solution {
    public boolean checkPowersOfThree(int n) {
        while (n > 0) {
            if (n % 3 == 2) {
                return false;
            }
            n /= 3;
        }
        return true;
    }
}
